#ifndef _NETWORK_H
#define _NETWORK_H

#include "head.h"

// 结构体声明
//  枚举
typedef enum
{
    regist,
    login,
    ok,
    no,
    check,
    finish,
    updata,
    queryOver,
    send_name,
    send_phone,
    send_ID,
    send_over,
    Recover,
    resend_name,
    resend_phone,
    resend_ID,
    resend_over,
    quit,
    creative
} MSG_TYPE;

typedef struct msg
{
    MSG_TYPE type;  // 消息类型
    char buf[1020]; // 消息的内容
} MSG;

typedef struct registerU // 注册结构体
{
    char name[128];
    char pwd[128];
    char name_warehouse[128]; // 用户数据库名称
} RGU;

typedef struct queryResult
{
    char **pzResult; // 查询结果的指针
    int row;         // 查询到的数据的行数
    int col;         // 查询到的数据的列数
} QUREY_RST;

// 查询结构体
typedef struct check_data
{
    char name_data[128];
    int row;
    int col;
} CHECK_DATA;

// 上传数据结构体
typedef struct up_data
{
    char user_name[128];
    char form_name[128];
    char form_data[128];
} UP_DATA;

// 登录信息
typedef struct loginInfo
{
    char name[128]; // 用户名
    int fd;         // 用户套接字，如果是TCP这里应该用户的套接字
} LOGIN_INFO;

// 函数声明
// 工作线程，接受服务器返回来的消息
void *work(void *pArg);
// 仓库功能函数
void warehouse(int sID, MSG msg, struct sockaddr_in clientAddr);
// 注册函数
int user_regist(int sID);
// 创建仓库函数
int creat_warehouse(int sID, MSG msg, RGU rgu);
// 登录函数
int user_login(int sID);
// 创建数据库函数
int initDatabase(char *pname);
// 用户菜单函数
int user_menu(int sID);
// 查看个人仓库函数
QUREY_RST *check_warehouse(int sID);
// 上传数据库函数
int upload_data(int sID);
// 恢复本地数据函数
int recover_warehouse(int sID);
// 查看云仓库数据
QUREY_RST *check_house(int sID);
// 分享数据库函数
int share_warehousea(int sID);
// 下载云数据库函数
int download_warehousea(int sID);
// 打印数据表函数
void data_print(QUREY_RST *qr);
#endif